#include <REGX52.H>
#include <intrins.h>
typedef unsigned int u16;	//对系统默认数据类型进行重定义
typedef unsigned char u8;
#define LED_PORT	P2	//使用宏定义P2端口
sbit LED1 = P2^0;
sbit LED2 = P2^1;
sbit LED3 = P2^2;
sbit LED4 = P2^3;
sbit LED5 = P2^4;
sbit LED6 = P2^5;
sbit LED7 = P2^6;
sbit LED8 = P2^7;
//使用宏定义LD1~8的操作掩码，为后面使用位操作控制LED准备
//#define LED1 (1<<0U)
//#define LED2 (1<<1U)
//#define LED3 (1<<2U)
//#define LED4 (1<<3U)
//#define LED5 (1<<4U)
//#define LED6 (1<<5U)
//#define LED7 (1<<6U)
//#define LED8 (1<<7U)

#endif
void Delayms(u16 num)		//@12.000MHz
{
	u8 i, j;
	do
	{
		i = 142;
		do
		{
			j = 2;
			while (--j);
		} while (--i);
	}while(num--);	
}
/******************************************************************************
* 函 数 名       : Time0_Init
* 函数功能         : 定时器0中断配置函数，通过设置TH和TL即可确定定时时间
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void Time0_Init(void)
{
	TMOD|=0x01;        //选择为定时器0模式，工作方式1
	TH0= 0xFC;           //给定时器赋初值，定时1ms
	TL0=0x18;
	ET0=1;          //打开定时器0中断允许
  EA=1;            //打开总中断
  TR0=1;           //打开定时器 
}
u16    Count;      //软件定时器标志值，0000~FFFF(0~65535)
/* 各类定时标志 */
u8     LEDFlag;    
void Time0_Handle() interrupt 1     //定时器0中断处理函数，快进快出，只在中断中更改标志位	
{
	TH0=0xFC;
	TL0=0x18;
	++Count;
	if(Count%500==0)
	{
		LEDFlag=1;
	}
}
void main()
{
  Time0_Init();
	while(1)
	{
		if(LEDFlag)
		{
			LEDFlag=0;
			LED1=!LED1;
		}
	}	
}




